構造
case expression in
pattern1)
statements ;;
pattern2)
statements ;;
pattern3)
statements ;;
esac
case expressionを設定する。
pattern が設定されたものと等しい場合statementsを実行する。
esac 実行範囲終了
例)
色々な画像ファイル名から画像を判断しgif-fileへ変換し、filen-nameもgifへ変えるプログラムを使って文字列比較演算子の使い方を理解しよう。
filename=$1
extention=${filename##*. } # サフィクス以外を取り除く。
ppmfile=${filename%.*}.ppm # サフィクスを取り除き.ppmを加える。
outfile=${filename%.*}.gif # サフィクスを取り除き.gifを加える。
if [ -z $filename ]; then # でfilenameがNULLであるか判断している。
echo "profile: ファイルがありません."
exit 1 # 判定終了
fi
case $extention in
gif ) # サフィクスがgifの場合そのまま終了。
exit 0# 判定終了
tga ) # サフィックスがtgaの場合
tgatoppm $filename > $ppmfile ;; # tagtoをfilename(tga)で実行し $ppmfile(ppm)に書き込む。
xpm ) # サフィックスがtgaの場合
xpmtoppm $filename > $ppmfile ;;
pcx ) # サフィックスがtgaの場合
pcxtoppm $filename > $ppmfile ;;
tiff ) # サフィックスがtgaの場合
tifftoppm $filename > $ppmfile ;;
jpg ) # サフィックスがtgaの場合
djpeg $filename > $ppmfile ;;
* ) # サフィクスが該当しない場合の処理を行う。
echoo "profile: $filename 処理対象にない画像ファイルです。"
exit 1;; # 判定終了
esac
ppmquant -quiet 256 $ppmfile | ppmogif -quiet > $outfile # ppmに加工されたfileを変換あわせて、サフィクスgifへ変えた名前で書き出す。
rm $ppnfile # tmpとして作成された.ppmを消す。